package com.example.demo2.action;

import com.example.demo2.define.CDEvents;
import com.example.demo2.define.CDStates;
import com.example.demo2.define.Variables;
import org.springframework.statemachine.StateContext;
import org.springframework.statemachine.action.Action;

public class PlayAction implements Action<CDStates, CDEvents> {

    @Override
    public void execute(StateContext<CDStates, CDEvents> context) {
        System.out.println("PlayAction, execute 被执行");
        //context.getExtendedState(): 获取状态机的扩展状态对象，用于存储跨状态的共享数据
        //getVariables(): 获取扩展状态中的变量映射表
        //put(key, value): 向变量映射表中存储键值对
        //存储播放时间: 将 Variables.ELAPSEDTIME 键对应的值设置为 0l（长整型0）
        //初始化计时器: 重置播放_elapsed_时间计数器，为新的播放会话做准备
        //跨状态数据共享: 这个变量可以在状态机的不同状态间共享和访问
        //在CD播放器状态机中，当触发播放动作时：
        //需要重置播放时间计数器
        //将已播放时间清零
        //为后续的播放进度跟踪做准备
        //这是状态机中常见的模式，用于维护需要在多个状态间持久化的数据。

        context.getExtendedState().getVariables().put(Variables.ELAPSEDTIME, 0l);
        context.getExtendedState().getVariables().put(Variables.TRACK, 0);
    }
}
